package tutorial.jmh;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;


public class TestTryCatch {
	
    @Benchmark
    public double TryInLoop() {
    	int a=0;
    	
    	for(int i=1; i<50; i++) {
    		
    		try{
    			a++;
	    	} catch (Exception e) {
	    		System.out.println("error");
	    	}
    		
    	}
    	return Math.log (1);
    }
    
    @Benchmark
    public double TryOutsideLoop() {
    	int a=0;
    	
    	try{
	    	for(int i=1; i<50; i++) {
	    		a++;
	    	}
    	} catch (Exception e) {
    		System.out.println("error");
    	}
    	return Math.log (1);
    }    

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(".*" + TestTryCatch.class.getSimpleName() + ".*")
                .mode(Mode.Throughput)
                .warmupIterations(2)
                .measurementIterations(10)
                .forks(1)
                .build();

        new Runner(opt).run();
    }

}
